<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

/***********前台路由**************/
//前台首页路由
Route::any('/', function () {
    return view('/home/index');
});

Route::any('/hash/{psw}', 'Home\IndexController@getHash');
//

//前台注册页面
Route::any('/register', 'Home\IndexController@register');
Route::any('/mailregister', 'Home\MailController@register');
//发送手机验证码
Route::any('/home/sendSMS', 'Home\IndexController@sendSMS');
//发送邮箱验证码
Route::any('/home/sendRegcode', 'Home\IndexController@sendRegcode');
//核对注册表单信息
Route::any('/home/addUser', 'Home\IndexController@addUser');
//前台登录页面
Route::any('/login', function () {
    return view('/home/login');
});
/*****************前台用户忘记密码*********************/
//前台用户忘记密码
Route::any('/forGet','Home\ForgetController@index');

//忘记密码发送手机验证码
Route::any('/home/sendreset','Home\ForgetController@sendreset');

//忘记密码发送邮箱验证码
Route::any('/home/sendcode','Home\ForgetController@sendCode');

//核对信息是否正确
//Route::any('/home/checkCode','Home\ForgetController@checkCode');

//找回密码的界面，修改密码
Route::any('/home/new_password', 'Home\ForgetController@new_password');

//修改密码，验证的界面，并且提交doLogin重新登录
Route::any('/home/new_login','Home\ForgetController@new_login');


/****************************************************/
//前台登录路由
Route::any('/doLogin', 'Home\IndexController@doLogin');
//前台退出路由
Route::any('/logout', 'Home\IndexController@logout');


//微博OAuth登录
Route::any('/oauth/weibo', 'Home\OauthController@wbLogin');
//微博OAuth回调
Route::any('/oauth/weibo/callback', 'Home\OauthController@wbCallBack');

//前台各项功能路由
Route::group(['prefix' => '/', 'namespace' => 'Home'],
    function () {
        Route::group(['middleware' => 'home.login'],
    function () {
        //Feed流列表 显示用户自己的Feed流 从session里获取用户id
        Route::any('/', 'FeedController@index');

        //热门微博路由
        //index 方法中实现一个加权算法, 综合所有微博的收藏,转发,评论,点赞量, 生成一个分数, 作为热门度的排序依据
        Route::any('/hot', 'HotController@index');

        //前台用户路由
        Route::group(['prefix' => '/u'], function () {
            //显示前台用户详情 用户个人中心页面 默认显示个人微博列表
            //完整 URL /u/1
            Route::any('/{user_id}', 'WeiboController@index');

            //修改用户信息 表单页面
            //完整 URL /u/1/edit
            Route::any('/{user_id}/edit', 'UserController@edit');

            //修改用户头像
            //完整 URL /u/1/edit/photo
            Route::any('/{user_id}/edit/photo', 'UserController@photo');

            //修改用户背景
            //完整 URL /u/1/edit/photo
            Route::any('/{user_id}/edit/bgd', 'UserController@bgd');


            //用户地址信息路由
            //完整 URL /u/1/edit/edit/add
            Route::any('/{user_id}/edit/pro', 'UserController@pro');
            Route::any('/{user_id}/edit/city', 'UserController@city');
            Route::any('/{user_id}/edit/county', 'UserController@county');

            //修改用户信息 表单页面的提交按钮
            //完整 URL /u/1/update
            Route::any('/{user_id}/update/', 'UserController@update');

            //修改密码
            Route::any('/{user_id}/password/', 'UserController@password');

            //关注路由 用户路由的子路由
            Route::group(['prefix' => '/{user_id}/follow'], function () {
                //显示关注列表
                //完整 URL /u/1/follow
                Route::any('/', 'FollowController@index');

                //关注按钮
                // 完整 URL: /u/{user_id}/follow/{follow_id}/update
                // 例子 URL: /u/1/follow/2/update
                //follow_id 是对方的 user_id, 关注按钮里自定义一个 user_id 属性, 用ajax传到 update 方法里
                //update 方法执行的操作是从自己的 user_infos 表的 follow 字段数组中增加这个 follow_id
                //同时在对方的 user_infos 表的 fans 字段数组中增加自己的 user_id
                Route::any('/{follow_id}/update', 'FollowController@update');

                //取消关注按钮
                // 完整 URL: /u/{user_id}/follow/{follow_id}/destroy
                // 例子 URL: /u/1/follow/2/destroy
                //follow_id 是对方的 user_id, 关注按钮里自定义一个 user_id 属性, 用ajax传到 destroy 方法里
                //destroy 方法执行的操作是从自己的 user_infos 表的 follow 字段数组中删除这个 follow_id
                //同时从对方的 user_infos 表的 fans 字段数组中删除自己的 user_id
                Route::any('/{follow_id}/destroy', 'FollowController@destroy');

            });

            //粉丝路由 用户路由的子路由
            Route::group(['prefix' => '/{user_id}/fans'], function () {
                //显示粉丝列表
                Route::any('/', 'FansController@index');

                //移除粉丝按钮
                // 完整 URL: /u/{user_id}/fans/{fans_id}/destroy
                // 例子 URL: /u/1/fans/2/destroy
                //fans_id 是对方的 user_id, 移除粉丝按钮里自定义一个 user_id 属性, 用ajax传到 destroy 方法里
                //destroy 方法执行的操作是从自己的 user_infos 表的 fans 字段数组中删除这个 fans_id
                //同时从对方的 user_infos 表的 follow 字段数组中删除自己的 user_id
                Route::any('/{fans_id}/destroy', 'FansController@destroy');
            });

            //用户收藏路由 用户路由的子路由
            Route::group(['prefix' => '/{user_id}/favorite'], function () {
                //收藏列表
                // 完整 URL: /u/{user_id}/favorite/
                // 例子 URL: /u/1/favorite/
                Route::any('/', 'FavoriteController@index');
            });

            //用户微博路由 用户路由的子路由
            Route::group(['prefix' => '/{user_id}/weibo'], function () {
                //微博列表 某一用户的所有微博
                // 完整 URL: /u/1/weibo/
                Route::any('/', 'WeiboController@index');
            });

            //用户点赞路由 用户路由的子路由
            Route::group(['prefix' => '/{user_id}/like'], function () {
                //点赞列表 用户点过赞的所有微博
                // 完整 URL: /u/1/like/
                Route::any('/', 'LikeController@index');
            });

            //相册路由 用户路由的子路由
            // 完整 URL: /u/{user_id}/photo/
            // 例子 URL: /u/1/photo/
            Route::group(['prefix' => '/{user_id}/photo'], function () {
                //图片列表
                Route::any('/', 'PhotoController@index');

                //上传图片 表单页面
                Route::any('/create', 'PhotoController@create');

                //上传图片 表单页面的提交按钮
                Route::any('/store', 'PhotoController@store');

                //显示图片详情
                Route::any('/{photo_id}', 'PhotoController@show');

                //删除图片
                Route::any('/destroy/{photo_id}', 'PhotoController@destroy');
            });

            //私信路由 用户路由的子路由
            // 完整 URL: /u/{user_id}/message/
            // 例子 URL: /u/1/message/
            Route::group(['prefix' => '/{user_id}/message'], function () {
                //私信列表
                Route::any('/', 'MessageController@index');

                //新建私信 表单页面
                Route::any('/create', 'MessageController@create');

                //新建私信 表单页面的提交按钮
                Route::any('/store', 'MessageController@store');

                //删除私信
                Route::any('/{photo_id}/destroy', 'MessageController@destroy');
            });
        });

        //微博路由
        Route::group(['prefix' => '/weibo'], function () {
            //发布微博的提交按钮 feed流最上方自带发微博框和发布按钮
            // 完整 URL: /weibo/store
            Route::any('/store', 'WeiboController@store');

            //显示微博详情
            // 完整 URL: /weibo/2/
            Route::any('/{weibo_id}', 'WeiboController@show');

            //删除微博按钮 判断 如果不是自己的微博, 就不显示删除按钮
            // 完整 URL: /weibo/2/destroy
            Route::any('/{weibo_id}/destroy', 'WeiboController@destroy');

            //转发列表路由 微博路由的子路由
            Route::group(['prefix' => '{weibo_id}/forward'], function () {
                //转发列表 显示某一微博的所有转发
                Route::any('/', 'WeiboController@forward');
            });

            //评论路由 微博路由的子路由
            Route::group(['prefix' => '{weibo_id}/comment'], function () {
                //评论列表 显示某一微博的所有评论, 同时显示一个评论输入框和提交按钮
                //完整 URL: /weibo/2/comment
                Route::any('/', 'CommentController@index');

                //发布评论 发布评论的提交按钮
                //完整 URL: /weibo/2/comment/store
                //显示在每一条微博下方, 标签中自定义 weibo_id 属性 用ajax传入store方法
                Route::any('/store', 'CommentController@store');

                //删除评论 判断 如果不是自己的评论, 就不显示删除按钮
                //完整 URL: /weibo/2/comment/3/destroy
                //显示在每一条评论右上角, × , 标签中自定义 weibo_id 属性 用ajax传入store方法
                Route::any('/{comment_id}/destroy', 'CommentController@destroy');
            });

            //收藏路由 微博路由的子路由
            Route::group(['prefix' => '{weibo_id}/favorite'], function () {
                //收藏按钮 显示在每一条微博下方 标签中自定义 weibo_id 属性 用ajax传入 update 方法
                // 完整 URL: /weibo/{weibo_id}/favorite/update
                // 例子 URL: /weibo/1/favorite/update
                Route::any('/update', 'FavoriteController@update');

                //取消收藏 显示在每一条微博下方 标签中自定义 weibo_id 属性 用ajax传入 destroy 方法
                // 完整 URL: /weibo/{weibo_id}/favorite/destroy
                // 例子 URL: /weibo/1/favorite/destroy
                Route::any('/destroy', 'FavoriteController@destroy');
            });

            //点赞路由 微博路由的子路由
            Route::group(['prefix' => '{weibo_id}/like'], function () {
                //点赞按钮 显示在每一条微博下方 标签中自定义 weibo_id 属性 用ajax传入 update 方法
                // 完整 URL: /weibo/{weibo_id}/like/update
                // 例子 URL: /weibo/1/like/update
                Route::any('/update', 'LikeController@update');

                //取消点赞 显示在每一条微博下方 标签中自定义 weibo_id 属性 用ajax传入 destroy 方法
                // 完整 URL: /weibo/{weibo_id}/like/destroy
                // 例子 URL: /weibo/1/like/destroy
                Route::any('/destroy', 'LikeController@destroy');
            });

        });

        //话题路由
        Route::group(['prefix' => '/topic'], function () {
            //话题列表
            //完整 URL /topic
            Route::any('/', 'TopicController@index');
            //话题详情 显示某一话题下的所有微博
            //完整 URL /topic/1
            Route::any('/{topic_id}', 'TopicController@show');
        });

        //友情连接路由
        Route::group(['prefix' => 'link'], function () {
            //友情连接列表
            //完整 URL /link
            Route::any('/', 'LinkController@index');
        });
            });
    });

/**************后台路由**************/

//后台各项功能路由

//后台登录
Route::any('/admin/login', 'Admin\IndexController@login');

//后台退出
Route::any('/admin/logout', 'Admin\IndexController@logout');

//Route::any('/admin', 'Admin\IndexController@index');

//拥有子权限不能删除
Route::any('/admin/hasPermission', 'Admin\AdminPermissionController@hasPermission');

Route::group(['prefix' => '/admin', 'namespace' => 'Admin', 'middleware' => 'rbac'],
    function () {
        Route::any('/', 'IndexController@index');
        //后台首页路由
                //微博路由   admin/weibo
                Route::group(['prefix' => 'weibo'], function () {
                    //微博列表
                    Route::any('/', 'WeiboController@index');

                    //显示微博分页
                    Route::any('/page', 'WeiboController@page');

                    //显示微博详情
                    Route::any('/{weibo_id}', 'WeiboController@show');

                    //显示多条评论的  状态  是否  前台可见  is_view
                    Route::any('/{detail_id}/status', 'WeiboController@status');

                    //微博前台可见状态按钮
                    Route::any('/{weibo_id}/update', 'WeiboController@update');
                });

                //待修改为标准写法
                //话题是否禁用
                Route::any('/status_topic', 'TopicController@status_topic');
                //话题热门是否禁用
                Route::any('/hot_topic', 'TopicController@hot_topic');

                //话题路由   admin/topic
                Route::group(['prefix' => 'topic'], function () {
                    //话题列表
                    Route::any('/', 'TopicController@index');

                    //话题的搜索分页
                    Route::any('/page', 'TopicController@page');

                    //添加话题 表单页面
                    Route::any('/create', 'TopicController@create');

                    //添加话题 表单页面的提交按钮
                    Route::any('/store', 'TopicController@store');

                    //显示话题详情
                    Route::any('/{topic_id}', 'TopicController@show');

                });

                //友情连接路由  admin/link
                Route::group(['prefix' => 'link'], function () {
                    //友情连接列表
                    Route::any('/', 'LinkController@index');

                    //添加友情连接 表单页面
                    Route::any('/create', 'LinkController@create');

                    //添加友情连接 表单页面的提交按钮
                    Route::any('/store', 'LinkController@store');

                    //修改友情连接 表单页面
                    Route::any('/edit/{id}', 'LinkController@edit');

                    //修改友情连接 表单页面的提交按钮
                    Route::any('/update/{id}', 'LinkController@update');

                    //删除友情连接
                    Route::any('/destroy/{id}', 'LinkController@destroy');
                });
                /******************************************************************************************************/
                //前台用户路由  admin/user
                Route::group(['prefix' => 'user'], function () {
                    //前台用户列表
                    Route::any('/', 'UserController@index');

                    //后台搜索分页
                    Route::any('/page', 'UserController@page');

                    //显示前台用户详情
                    Route::any('/{user_id}', 'UserController@show');

                    //前台用户登录权限的  状态          修改按钮
                    Route::any('/{user_id}/update', 'UserController@update');

                    //前台用户详情的       状态         修改按钮
                    Route::any('/{detail_id}/status', 'UserController@status');

                });

                //前台角色路由
                Route::group(['prefix' => 'role'], function () {
                    //前台角色列表
                    Route::any('/', 'RoleController@index');

                    //添加前台角色 表单页面
                    Route::any('/create', 'RoleController@create');

                    //添加前台角色 表单页面的提交按钮
                    Route::any('/store', 'RoleController@store');

                    //显示前台角色详情
                    Route::any('/{role_id}', 'RoleController@show');

                    //修改前台角色 表单页面
                    Route::any('/{role_id}/edit', 'RoleController@edit');

                    //修改前台角色 表单页面的提交按钮
                    Route::any('/{role_id}/update', 'RoleController@update');

                    //删除前台角色
                    Route::any('/{role_id}/destroy', 'RoleController@destroy');
                });

                //前台权限路由
                Route::group(['prefix' => 'permission'], function () {
                    //前台权限列表
                    Route::any('/', 'PermissionController@index');

                    //添加前台权限 表单页面
                    Route::any('/create', 'PermissionController@create');

                    //添加前台权限 表单页面的提交按钮
                    Route::any('/store', 'PermissionController@store');

                    //显示前台权限详情
                    Route::any('/{permission_id}', 'PermissionController@show');

                    //修改前台权限 表单页面
                    Route::any('/{permission_id}/edit', 'PermissionController@edit');

                    //修改前台权限 表单页面的提交按钮
                    Route::any('/{permission_id}/update', 'PermissionController@update');

                    //删除前台权限
                    Route::any('/{permission_id}/destroy', 'PermissionController@destroy');



                });
                /*****************************************管理员用户路由********************************************/
                //管理员用户路由 admin/admin_user

                Route::group(['prefix' => 'admin_user'], function () {
                    //管理员用户列表
                    Route::any('/', 'AdminUserController@index');

                    //管理员是否允许登陆
                    Route::any('/status', 'AdminUserController@status');

                    //添加管理员用户 表单页面
                    Route::any('/create', 'AdminUserController@create');

                    //添加管理员用户 表单页面的提交按钮
                    Route::any('/store', 'AdminUserController@store');

                    //修改管理员用户 表单页面
                    Route::any('/edit/{id}', 'AdminUserController@edit');

                    //修改管理员用户 表单页面的提交按钮
                    Route::any('/update/{id}', 'AdminUserController@update');

                    //删除管理员用户
                    Route::any('/destroy/{id}', 'AdminUserController@destroy');
                });
                /*****************************后台角色表*********************************/
                //后台角色路由  admin/admin_role
                Route::group(['prefix' => 'admin_role'], function () {
                    //后台角色列表
                    Route::any('/', 'AdminRoleController@index');

                    //添加后台角色 表单页面
                    Route::any('/create', 'AdminRoleController@create');

                    //添加后台角色 表单页面的提交按钮
                    Route::any('/store', 'AdminRoleController@store');

                    //修改后台角色 表单页面
                    Route::any('/edit/{id}', 'AdminRoleController@edit');

                    //修改后台角色 表单页面的提交按钮
                    Route::any('/update/{id}', 'AdminRoleController@update');

                    //删除后台角色
                    Route::any('/destroy/{id}', 'AdminRoleController@destroy');
                });

                /*****************************后台权限表完成*********************************/
                //后台权限路由   admin/admin_permission
                Route::group(['prefix' => 'admin_permission'], function () {

                    //后台权限列表
                    Route::any('/', 'AdminPermissionController@index');

                    //是否是菜单的按钮
                    Route::any('/status', 'AdminPermissionController@status');

                    //添加后台权限 表单页面
                    Route::any('/create', 'AdminPermissionController@create');

                    //添加后台权限 表单页面的提交按钮
                    Route::any('/store', 'AdminPermissionController@store');

                    //修改后台权限 表单页面
                    Route::any('/edit/{id}', 'AdminPermissionController@edit');

                    //修改后台权限 表单页面的提交按钮
                    Route::any('/update/{id}', 'AdminPermissionController@update');

                    //删除后台权限
                    Route::any('/destroy/{id}', 'AdminPermissionController@destroy');
                });
            /********************************轮播图***************************/
                 // admin/admin_carousel

                Route::group(['prefix' => 'admin_carousel'], function () {

                    //轮播图列表
                    Route::any('/', 'CarouselController@index');

                    //添加轮播图 表单页面
                    Route::any('/create', 'CarouselController@create');

                    //添加轮播图 表单页面的提交按钮
                    Route::any('/store', 'CarouselController@store');

                    //修改轮播图 表单页面
                    Route::any('/edit/{id}', 'CarouselController@edit');

                    //修改轮播图 表单页面的提交按钮
                    Route::any('/update/{id}', 'CarouselController@update');

                    //删除轮播图
                    Route::any('/destroy/{id}', 'CarouselController@destroy');
                });
        /********************************视频管理***************************/
        //    admin/video

        Route::group(['prefix' => 'video'], function () {

            //轮播图列表
            Route::any('/', 'VideoController@index');

            //添加轮播图 表单页面
            Route::any('/create', 'VideoController@create');

            //添加轮播图 表单页面的提交按钮
            Route::any('/store', 'VideoController@store');

            //修改轮播图 表单页面
            Route::any('/edit/{id}', 'VideoController@edit');

            //修改轮播图 表单页面的提交按钮
            Route::any('/update/{id}', 'VideoController@update');

            //删除轮播图
            Route::any('/destroy/{id}', 'VideoController@destroy');
        });
            });

//    });
